فرض کن ساعت مچی داری که گاهی جلو یا عقب میافته. باید وقتش رو درست کنی. توی لینوکس هم همینطوره! سیستمها دو نوع زمان دارند: زمان سختافاری (RTC) که روی مادربرد ذخیره میشود و زمان سیستمی (System Time) که در حین کار استفاده میشود. توی این جلسه یاد میگیری چطور هر دو رو مدیریت کنی و با سرورهای زمان هماهنگ کنی.
در سیستمهای کامپیوتری، زمان از یک نقطه شروع به نام مبداء زمان (Epoch) محاسبه میشود. این مبداء در سیستمهای یونیکس و لینوکس، January 1, 1970 است. از این زمان به بعد، تعداد ثانیههای گذشته شمارش میشود و به عنوان زمان جاری در نظر گرفته میشود.
توضیح: date +%s تعداد ثانیههای گذشته از ۱۹۷۰/۰۱/۰۱ تا لحظه حال را نمایش میدهد. به این عدد، Timestamp یا Unix Time گفته میشود.
hwclockdate و timedatectldate (زمان سیستمی)
date برای نمایش و تنظیم زمان سیستمی استفاده میشود.
date زمان سیستمی را نشان میدهد، نه زمان سختافاری.
hwclock (زمان سختافاری)
hwclock برای نمایش و مدیریت زمان سختافاری (RTC) استفاده میشود. این دستور زمان ذخیرهشده روی مادربرد را نشان میدهد.
--utc و --localtime:
--utc → زمان را به صورت UTC نمایش میدهد (زمان جهانی).--localtime → زمان را با منطقه زمانی محلی نمایش میدهد.توضیح: زمان سختافاری را به تاریخ و زمان مشخص شده تنظیم میکند.
توضیح: زمان سختافاری را با زمان سیستمی هماهنگ میکند (زمان سیستمی را روی مادربرد ذخیره میکند).
توضیح: زمان سیستمی را با زمان سختافاری هماهنگ میکند (زمان سختافاری را به سیستم میدهد).
برای استفاده از hwclock به دسترسی root نیاز دارید. از sudo استفاده کنید.
| گزینه | توضیح |
|---|---|
--show |
نمایش زمان سختافاری (پیشفرض) |
--set --date="YYYY-MM-DD HH:MM:SS" |
تنظیم زمان سختافاری به تاریخ و زمان مشخص |
--systohc |
هماهنگسازی زمان سختافاری با زمان سیستمی |
--hctosys |
هماهنگسازی زمان سیستمی با زمان سختافاری |
--utc |
نمایش/تنظیم زمان به صورت UTC |
--localtime |
نمایش/تنظیم زمان به صورت محلی |
--systohc (ذخیره زمان سیستمی در سختافزار) و --hctosys (خواندن زمان سختافاری و تنظیم سیستم).
timedatectl (مدیریت زمان سیستم)
timedatectl ابزاری مدرن برای مدیریت زمان در سیستمهای با systemd است.
توضیح: زمان سیستمی را به تاریخ و زمان مشخص تنظیم میکند.
توضیح: true فعالسازی و false غیرفعالسازی هماهنگسازی خودکار زمان با NTP.
timedatectl set-ntp 0 نیز میتوان NTP را غیرفعال کرد (0 به معنای خاموش).
منطقه زمانی مشخص میکند که سیستم با کدام منطقه زمانی کار کند.
توضیح: لیست تمام مناطق زمانی موجود را نمایش میدهد (با استفاده از less میتوانید مرور کنید).
توضیح: منطقه زمانی را به تهران تغییر میدهد.
توضیح: با ایجاد لینک سمبلیک به فایل منطقه زمانی، زمان محلی را تغییر میدهد. این روش قدیمی است و timedatectl روش مدرنتر.
timedatectl set-timezone Asia/Tehranln -sf /usr/share/zoneinfo/Asia/Tehran /etc/localtimeNTP پروتکلی برای هماهنگسازی زمان بین سیستمها از طریق شبکه است. این پروتکل از یک ساختار طبقهای (Stratum) استفاده میکند:
توضیح: این دستور هماهنگسازی خودکار زمان را فعال میکند.
ntp یا chrony را نصب کنید. در سیستمهای مدرن با systemd، timedatectl set-ntp true کافی است.
date +%s: نمایش تعداد ثانیههای گذشته از Epochhwclock: مدیریت زمان سختافاری--systohc (ذخیره در سختافزار)، --hctosys (خواندن از سختافزار)timedatectl: مدیریت زمان سیستمی و NTPtimedatectl set-ntp true/false: فعال/غیرفعال کردن NTPtimedatectl set-timezone Asia/Tehranln -sf /usr/share/zoneinfo/Asia/Tehran /etc/localtime